Ultimate Tracker 2.0 * A Retour 2048 Software * By : - Checksum of Equinox (Amiga adaptation) - Edy of Equinox (Falcon adaptation) - Sharp Man of The Black Cats (Program) _________________________________________________________________ English Documentation _________________________________________________________________ 1. Overall = ======= This program replays Amiga (or Atari) soundtracker, Noisetrac- ker or Protracker 1.2 modules. It runs on all Atari systems with a DMA soundchip (STe, Mega STe, TT or Falcon). It can be used as well as a normal program as a desk accessory. Since the version 2.0, the player uses the MFP i7 interrupt instead of the timer A. So now, all timers are free (particulary the timer used by AES in evnt_timer). 2. How does it run ? = ================= There's three ways to launch this program : As a normal program (extension is .PRG or .APP) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Just click onto the icon of the player to launch it. When the program is loaded, the player is displayed into a GEM window. There's also a GEM menu to access to the desk accessories (like the CPX sound manager). You can load a module or quit the program directly thanks to this menu. As a GEM program which needs parameters (extension is .GTP) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Click onto the icon of the player to launch it. Then, a dialog box appears and asks you to enter parameters. Parameters needed are the path and the name of a module, just type it and press return. The player will load and play the module automatically. If you type return without typing anything, the program will act in the same way of a normal GEM program. Note that you can drag the icon of a module and drop it onto the icon of the player, the player will load and play this module. (This last feature is available only with TOS version > 1.62). Thanks to this feature, you can install the player as an application for the files *.MOD in the menu "options" of the desktop. When you'll click onto a module, the player will play it automatically. As a desk accessory (extension is .ACC) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Install the player on the root of your boot disk and reboot the computer, the player will automatically loaded, then you can invoque it from any application. Moreover you can play a module everywhere in background. This feature is only available when the player is launched as a desk accessory. You can use the accessory as an application for *.MOD files thanks to the program "PLAY_ACC.GTP". 3. Little explanations = =================== 1. The Icons ~~~~~~~~~~~~ The player is displayed into a standard GEM window. Its icons are easy to understand, from left to right : Load : Loads a module into memory. The size of the module ---- must fit into the buffer (see lower). If the program is launched as a PRG, APP or GTP, you can also load a module from the menu. The player can load module packed with Pack Ice any version (Atari packer),Power Packer (Amiga packer) or Noisepakker 1.0 from Delta Force, it will depack it automatically before playing it. (New ! : you can load modules packed with Power Packer or Noisepakker then packed again with pack ice pack ratio for Noisepakker+Ice is more than 70% !!!) Rewind : Rewinds the music (jump to the previous pattern). ------ Play : Start the music ---- Forward: Forwards the music (jump to the next pattern). ------- Pause : Pauses the music. Click an other time on this icon ----- to restart the music. Stop : Stops the music and clear the module from memory. ---- 2. The Frequencies ~~~~~~~~~~~~~~~~~~ There's four buttons under the icons, these buttons allow you to choose the frequencies. Available frequencies are 6.25 KHz, 12.5 KHz, 25 KHz or 50 KHz. Some frequencies aren't available on all machines. On Falcon, 6.25Khz is not available (the DMA soundchip of the Falcon can't restitute sounds at this frequency) and 50Khz isn't available if the CPU speed is 8 Mhz. 50Khz isn't available on STe or MegaSTe. On MegaSTe, 50Khz is available if the CPU speed is 16Mhz and if the cache is on. Note that the more the frequency is high, the more the sound is good but the more the music takes CPU time. It is pretty important to choose the good frequency if you use the player as a desk accessory coz the other running applications will be more or less slowed by the player. (Personnaly, I think that 12.5 is a good value for a STe (even if you can listen at 25), 25 for a MSTe or Falcon030 and 50 for a TT). Watch out: There's a lot of tests which are done : depending the machine and the CPU speed, some frequencies will be unavailable. If you're using a MegaSTe at 16MHz and you're listening at 50KHz, if you switch the CPU time to 8MHz, the frequency will change automatically to 12.5 KHz and 50KHz will be unavailable until CPU speed is 16MHz like the Falcon: if you're listening at 50KHz and if you switch off the 68030 caches, frequency will change automatically. But please, don't play with caches and CPU speed during the player is playing module. Bad things can happen... 3. Loop ~~~~~~~ This button switches the loop flag. If it's ON, the module will play again when it will reach its end, if it's OFF, it will stop and clear from memory. 4. Position display ~~~~~~~~~~~~~~~~~~~ Under these button, there's a graphic display of the current position of the music. 5. The other buttons ~~~~~~~~~~~~~~~~~~~~ Under these 4 buttons (or under the icons if you use a Falcon), there is 3 buttons : -> Quit : Close the player window and stop the music. This ------- music is cleared from memory. If you use the player as PRG, APP or GTP, you can do the same thing with the option QUIT of the menu FILE. -> Play : This button is only available if the program is a ------- desk accessory. Clicking on this button close the player window but the music is still playing on background. Config : This button allows you to configure the player. ------ You can change the size of the allocated memory and the default path for the modules. 1. The size of the buffer - ---------------------- To load the module, the program reserves an amounts of memory when it is launched. By default the size is 256000 bytes. You can increase or decrease this amount, but notice that the new value will be ef- fective only the next time you'll launch the pro- gram coz the memory allocation is done only one time (when the program starts). When you click onto this button, a dialog box appears and displays in the upper part the current size of the reserved memory, type in the lower part the size you want, then click on OK or type return. 2. The default path - ---------------- You can choose the path where the player will search the modules. To choose it, click on the button "Choose path", a fileselector appears to do it. The selected path is displayed into a box. If the path doesn't fit into this box, you can see it by clicking on the arrows buttons to scroll it. To save these parameters, click on OK (Cancel to leave). The new parameters are saved directly into the file of the program, that's why a fileselector appears, choose the player file and click on OK. As this size is saved directly into the program file, you must'nt change the structure of this file, for exemple, you can't pack the player. In fact, you can pack the player but you'll have to unpack it before modifying the size then you'll be able to pack it again. 4. Ultimate Tracker and Multitos = ============================= Ultimate Tracker works fine with Multitos on all machines I've tested (STe, TT and Falcon). It works fine with great screens and graphic card (like Spektrum). The ressource file will use AES features of Multitos on a STe and TT. Be careful : don't modify flags of the program (with the program PRGFLAG.PRG), this program must have its "SUPER" bit set coz it uses a timer under multitos, if you switch off this flag, the system will crash. WARNING ! Never kill the process when the player is playing a module, coz the memory used by the interrupt rout will be free without prevent the player, stop music, then kill the process. 5. The APPL_WRITE commands = ======================= GEM provides a way to communicate beetween applications through an events buffer. This allows an application to take control of an other one. Ultimate Tracker support these commands, so your application can pilot the player. How does it run ? First of all, the player must be resident in memory. The only way to do that is to install it as a desk accessory in monotasking TOS, you can launch it the way you want with Multitos. Then, you must find the AES identification of the player, there's two ways to find this id. The "nicer" method is to use the AES function appl_find like this : id=APPL_FIND(name) where name is the filename of the player without its extension watch out, the name must have 8 characters. This function returns the AES id. If you don't know the current filename of the player, there's an other way to proceed : the player when it is installed, put a cookie into the cookie jar. This cookie is : "UTRK" and the data cookie is the current AES id. Be careful and use this last way of finding AES id if you're sure that you won't able to find it with appl_find. You can imagine easily the problems if there's several instances of the player in memory, you won't able to know who belongs the AES id re- turned by appl_find or by the cookie jar. 1. Commands sent to the player ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Thanks to this AES id, you'll be able to control the player or receive messages from it. You can send commands to the player with the AES function APPL_WRITE. APPL_WRITE needs 3 parame- ters : the identification of the player, the number of bytes to send to the player and the adress of an array of integers (16 bits word)which contain the command to send to the player. These commands have this format : - 1st word : always equal to ID_TRACK (999) - 2nd word : number of the command - 3 - 8 : parameters The commands are : T_LOAD (900) : Load a module into the player buffer. The adress of the path and the name of the module is into the 3rd and the 4th words. (MSB part in 3rd and LSB in 4th). T_PLAY (901) : Plays the module loaded. T_FORWARD (902) : Forwards the module. T_REWIND (903) : Rewinds the module. T_PAUSE (904) : Pauses the module. T_STOP (905) : Stops the module and clears it from memory. T_ABOUT (906) : Display an information box. T_OPEN (907) : Opens the player window. T_CLOSE (908) : Closes the player window. T_FREQ (909) : Changes the frequency. 3rd word contains the frequency (0-3). T_LOOP (910) : Switches the loop flag ON/OFF. T_IDENT (911) : Tells to the player that the application wants receive messages from the player. Word 3 contains AES id of the application. (see next paragraph). T_FIDENT (912) : Tells to the player that the application doesn't want no more messages. (idem). T_INFOS (913) : Ask some informations to the player. See next paragraph for reception of these informations. To see how to use these commands, have a look to the program called \EXEMPLE\SHELL\CMD_TRAX.C. It is a shell which control the player. Note: If you use this feature under Multitos, don't forget to ---- switch on the "GLOBAL" flag of your program, coz when you will send a T_LOAD command to the player, the play- er will read at the address you gave it to get the path of the module, but this address is located into the me- mory of your application. The "GLOBAL" flag allows the player to read into the memory of your application. If this flag is off, Multitos will make a memory pro- tection error and will remove the player from memory. 2. Messages which are received ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You can send commands to the player, but you can receive messages from the player too. These messages tell to an ap- plication all things the player does. To receive these messa- ges, you have to proceed this way : - Tell to the player we want messages with the command T_IDENT. Since the player receive this command, it gonna send messages to the application. - Wait for messages in an evnt_multi loop. - When the application needn't no more message, send the com- mand T_FIDENT. Messages have this format : - 1st word : always equel to ID_REPONSE (998) - 2nd word : number of the message - 3 - 8 : parameters Messages are : R_PLAY (951) : The module starts playing. R_FORWARD (952) : Forward. R_REWIND (953) : Rewind. R_PAUSE_ON (954) : Pause is ON. R_PAUSE_OFF(955) : Pause is ON. R_STOP (956) : Module is stopped and cleared from memory. R_OPEN (957) : Player window is opened. R_CLOSE (958) : Player window is closed. R_FREQ (959) : The frequency is changed (new frequency in third word). R_LOOP_OFF (960) : The loop flag is OFF. R_LOOP_ON (961) : The loop flag is ON. R_BEGLOAD (962) : Module is loading. (word 3 contains MSB part of the adress of filename and word 4 contains LSB part.) To access of this filename under MultiTOS, you must be in supervisor mode, coz player has its Super flag ON. R_ENDLOAD (963) : Module has been loaded without error. R_FAILOAD (964) : Error during module loading. R_MOVE (965) : Player window has been moved. New X and Y positions are in word 3 and 4. R_INFOS (966) : This message is sent when the player receives the T_INFOS command. word 3 : player window handle. word 4 : vdi graphic handle. word 5 : AES id. word 6 : Major version number. word 7 : Minor version number. R_POSIT (967) : Current position of the music. word 3 : current position. word 4 : last position. R_QUIT (968) : Player is removed from memory. R_ENDMOD (969) : The module has reached its end (only when loop flag is OFF). R_PROTECMOD(970) : This message is received when the loaded module has corrupted informations, it will be impossible to know where the module gon- ga loop so, it will be impossible to for- ward, rewind or see the player counter. If you need other messages, tell it to me. See the program EXEMPLE\RECEIVE\RECEIVE.C. Note: If you use these feature under MultiTOS, you have to ---- be in Supervisor mode in your application to access the name of the module in the message T_BEGLOAD coz you want to access to an address which is located into the player memory, and this memory area has its flag "Super" set. So this memory can only be accessed in supervisor mode. 6. Limitations = =========== There's some limitations in this program. Up to now, it doesn't test if the file loaded is a module or not, if you try to load anything instead of a module, the program will crash. There's sometimes on Falcon a bug : the player makes some strange noise instead of playing music. It seems that this bug is fixed. Anyway, to avoid this problem, put the program called FPATCH.PRG in your AUTO folder, it fixes 2 bugs (and one of them is the sound initialization, it concern only TOS lesser than 4.05). !!! PLEASE DON'T LAUNCH TWO INSTANCES OF THIS PROGRAM IN THE SAME SESSION. BAD THINGS CAN HAPPEN (Why do you wanna listen two modules in same time ???) 7. Sources and other... = ==================== There three sources given with this program : - SHELL : It's a small shell which can control the player thanks to the appl_write commands. Use it with MintShell under MultiTOS or with a shell into a window under TOS. - RECEIVE : A sample of program which show messages which are sent by the player to an application. Thanks to this sample and the first one, you can see how to make communication in two directions between the player and an application. To see how these programs run, use them simultaneously under MultiTOS with Mintshell (funny !). - PLAY_ACC : A program which allows you to use the player which is a desk accessory as an application for the .MOD files. Install this program in the desktop as an application and then, every time you'll click onto a module icon, the accessory will load and play it. I don't spread the sources of the player now coz there's still bugs to fix and I want to make the memory management again. CPU used ~~~~~~~~ I made some little tests with GEMBENCH to see how CPU time the player takes. I made these tests in 736X560 mode (with 16 co- lors) on Falcon030. 12.5 Khz : 16 % CPU time used 25 Khz : 27 % CPU time used 50 Khz : 50 % CPU time used To contact us : ~~~~~~~~~~~~~ The Black Cats / Equinox Chƒlet de Riqueval 02420 Bellicourt France 3614 RTEL1/RTEL2 or 3614 TEASER or 3615 STMAG bal Sharpman 8. History = ======= v.1.0ž - Just load and plays modules on Falcon v.1.1ž - Plays modules as a desk accessory (accept Packed modules with Pack Ice) v.1.2ž - New graphix interface. v.1.4ž - Correct lots of bugs. v.1.5ž - Supports Power Packer v.1.6ž - Supports STe/TT replay routines v.1.7ž - works fine under Multitos/supports APPL_WRITE cmds v.1.0 - Supports AES 4.0 on STe or TT v.1.1 - Supports all Pack Ice version and Noisepakker 1.0 v.1.2 - Allows to save default path v.1.3 - Speeded up Falcon replay routine by NOP/DSP CREW (Thanks !) v.1.4 - I fixed a lot of fucking memory bugs v.1.5 - "New" player routine - Allows to change frequency on Falcon030 - Fixes display bugs - Uses 030 cache on TT and memory cache on MSTe v.1.7 - Fix a lot of bugs v.2.0 - Allows communication with a shell in two ways - Use MFP i7 instead of Timer A - Shows current position